﻿#region << 版 本 注 释 >>
/*----------------------------------------------------------------
// Copyright (C) 2021 kingerrobot
// 版权所有。 
//
// 文件名：BEquip
// 文件功能描述：
//
// 创建者：名字 (zzl)
// 时间：2021/12/6 15:09:58
//
// 修改人：
// 时间：
// 修改说明：
// 版本：V1.0.0
//----------------------------------------------------------------*/
#endregion
namespace KingerRobot.MexicoSailunMDC.SpiService;
internal class BRcsEquip : IRcsEquip
{
    public PORcsEquip GetRcsEquipByLocId(long? locId)
    {
        var db = Db.Default;
        var result = db.RcsEquips.Join(db.WcsEquipLocs, f => f.Id, s => s.EquipId, (f, s) => new
        {
            Equip = f,
            EquipLoc = s,
        })
            .Where(t => t.Equip.EquipEnable == 1 && t.EquipLoc.LocId == locId)
            .Select(t => t.Equip)
            .FirstOrDefault();
        return result;
    }
    public PORcsEquip GetRcsEquipByDefaultLocId(long? locId)
    {
        var db = Db.Default;
        var result = db.RcsEquips.Where(t => t.EmsDefaultLoc == locId)
            .FirstOrDefault();
        return result;
    }
    public PORcsEquip GetRcsEquipById(long? id)
    {
        var db = Db.Default;
        var result = db.RcsEquips
            .Where(t => t.Id == id)
            .FirstOrDefault();
        return result;
    }

    public int UpdateEquipErrCode(long? id, int errCode)
    {
        var db = Db.Default;
        var result = db.RcsEquips
            .Where(t => t.Id == id).Update(new PORcsEquip
            {
                ErrCode = errCode,
            });
        return db.SaveChanges();
    }

    public List<PORcsEquip> GetAbnormalEquipAll()
    {
        var db = Db.Default;
        var result = db.RcsEquips
            .Where(t => t.EquipEnable == 0 || t.ErrCode > 0)
            .ToList();
        return result;
    }

    public PORcsEquip GetWorkEquipById(long? id)
    {
        var db = Db.Default;
        var result = db.RcsEquips
            .Where(t => t.EquipEnable == 1 && t.ErrCode == 0 && t.Id == id)
            .FirstOrDefault();
        return result;
    }
    public List<PORcsEquip> GetWorkEquipByIds(List<long?> ids)
    {
        var db = Db.Default;
        var result = db.RcsEquips
            .Where(t => t.EquipEnable == 1 && t.ErrCode == 0 && ids.Contains(t.Id))
            .ToList();
        return result;
    }

    public bool IsEnableEquipById(long? id) => GetWorkEquipById(id) is not null;

    public PORcsEquip GetRcsEquipByCode(string equipCode)
    {

        var db = Db.Default;

        var result = db.RcsEquips
.Where(t => t.EquipEnable == 1 && t.ErrCode == 0 && t.EquipCode == equipCode)
.FirstOrDefault();
        return result;

    }

    public List<PORcsEquip> GetRcsEquipListByCode(string equipCode)
    {

        var db = Db.Default;
        var result = db.RcsEquips.Where(t => t.EquipCode == equipCode).ToList();
        return result;

    }
}
